package com.jyy.prefabricated.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.jyy.prefabricated.enums.BaseTeamEnum;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 考试
 */
@Data
public class Exam implements Serializable {

    private static final long serialVersionUID = 1L;

    private Integer id;

    /**
     * 项目id
     */
    private Integer projectId;

    /**
     * 考核点id
     */
    private Integer pointId;

    /**
     * 试卷id
     */
    private Integer paperId;

    /**
     * 是否随机出题
     */
    private Boolean ifRandom;

    /**
     * 考试名称
     */
    private String name;

    /**
     * 答题时间
     */
    private Integer answerTime;

    /**
     * 允许考试次数
     */
    private Integer examCount;

    /**
     * 及格分数
     */
    private Double passGrade;

    /**
     * 考试开始时间
     */

    private String examStartTime;

    /**
     * 考试结束时间
     */
    private String examEndTime;

    /**
     * 发布状态
     */
    private Integer status;


    /**
     * 考试状态
     */
    private Integer examStatus;

    /**
     * 是否逻辑删除
     */
    private Boolean deleted = false;

    /**
     * 租户编码
     */
    private String teamCode = BaseTeamEnum.BASE.getValue();

    /**
     * 原价
     */
    private BigDecimal listPrice;

    /**
     * 售价
     */
    private BigDecimal price;

    /**
     * 封面
     */
    private String pic;

    /**
     * 简介
     */
    private String content;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;
    /**
     * 成绩展示(1批改完成后立即展示;2隐藏)
     */
    private Integer gradeStatus;
    /**
     * 题目展示(1提交考试后立即展示;2提交且批改完成后展示;3隐藏)
     */
    private Integer questionStatus;
    /**
     * 答案展示(1提交考试后立即展示;2考试结束后立即展示;3提交且批改完成后展示4.隐藏)
     */
    private Integer answerStatus;


    /**
     * 返回关联项目或课程集合
     */
    private List<ExamCourse> goodsList = new ArrayList<>();


    /**
     * 文档课程
     */
    private List<Integer> documentCoursesList = new ArrayList<>();

    /**
     * 录播课程
     */
    private List<Integer> recordingCoursesList = new ArrayList<>();
    /**
     * 关联线下课程
     */
    private List<Integer> courseList = new ArrayList<>();

    /**
     * 关联课程包
     */
    private List<Integer> coursePackageList = new ArrayList<>();

    /**
     * 文档课程集合
     */
    private List<Course> dcList = new ArrayList<>();

    /**
     * 录播课程集合
     */
    private List<Course> rcList = new ArrayList<>();
    /**
     * 关联线下课程集合
     */
    private List<Course> csList = new ArrayList<>();

    /**
     * 关联课程包集合
     */
    private List<CoursePackage> cpList = new ArrayList<>();

}